
#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) 
	МетаданныеПеречисления = Неопределено; //ОбъектМетаданныхПеречисление
	ЗначениеПеречисления = Неопределено; //ПеречислениеСсылкаИмяПеречисления
	
	Если Параметры.Свойство("ТипПеречисления") Тогда
		//@skip-check unknown-form-parameter-access
		ТипПеречисления = Параметры.ТипПеречисления;
		
		Если УИ_ОбщегоНазначения.ЭтоПеречислениеПоТипу(ТипПеречисления) Тогда
			ПустаяСсылка = УИ_ОбщегоНазначения.НовоеЗначениеПоТипу(ТипПеречисления);
			МетаданныеПеречисления = ПустаяСсылка.Метаданные();
		КонецЕсли;
		
	ИначеЕсли Параметры.Свойство("ЗначениеПеречисления") Тогда
		//@skip-check unknown-form-parameter-access
		ЗначениеПеречисления = Параметры.ЗначениеПеречисления;
		Если ЗначениеПеречисления <> Неопределено Тогда
			МетаданныеПеречисления = ЗначениеПеречисления.Метаданные();
		КонецЕсли;
	КонецЕсли;
		
	Если МетаданныеПеречисления = Неопределено Тогда
		Отказ = Истина;
		УИ_ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Не удалось открыть выбор перечисления");
		ВозвраТ;
	КонецЕсли;
	
	Если Не УИ_ОбщегоНазначения.ЭтоПеречисление(МетаданныеПеречисления) Тогда
		Отказ = Истина;
		УИ_ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Нельзя выбирать значения перечисления для других типов");
		ВозвраТ;
	КонецЕсли;
	
	Заголовок = МетаданныеПеречисления.ПолноеИмя();
	
	МенеджерПеречисления = Перечисления[МетаданныеПеречисления.Имя];
	
	ПустаяСсылка = МенеджерПеречисления.ПустаяСсылка();

	Для Каждого ЭлементПеречисления Из МетаданныеПеречисления.ЗначенияПеречисления Цикл
		НоваяСтрока = ЗначенияПеречисления.Добавить();
		НоваяСтрока.Ссылка = МенеджерПеречисления[ЭлементПеречисления.Имя];
		НоваяСтрока.Имя = ЭлементПеречисления.Имя;
		НоваяСтрока.Представление = ЭлементПеречисления.Синоним;
		НоваяСтрока.ЗначениеСтрокой = "Перечисление." + МетаданныеПеречисления.Имя + "." + ЭлементПеречисления.Имя;
	КонецЦикла;

	Если ЗначениеПеречисления <> Неопределено Тогда
		НайденныеСтроки = ЗначенияПеречисления.НайтиСтроки(Новый Структура("Ссылка", ЗначениеПеречисления));
		Если НайденныеСтроки.Количество() > 0 Тогда
			Элементы.ЗначенияПеречисления.ТекущаяСтрока = НайденныеСтроки[0].ПолучитьИдентификатор();
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыФормыЗначенияПеречисления

&НаКлиенте
Процедура ЗначенияПеречисленияВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	ЗавершитьВыборЗначения();
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура ВыбратьЗначение(Команда)
	
	ЗавершитьВыборЗначения();
	
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаКлиенте
Процедура ЗавершитьВыборЗначения()
	
	ТекДанные = Элементы.ЗначенияПеречисления.ТекущиеДанные;
	Если ТекДанные <> Неопределено Тогда
		ВыбранноеЗначение = ТекДанные.Ссылка;
	Иначе     
		ВыбранноеЗначение = ПустаяСсылка;
	КонецЕсли;
	
	Если ВладелецФормы <> Неопределено Тогда
		ОповеститьОВыборе(ВыбранноеЗначение);
	Иначе
		Закрыть(ВыбранноеЗначение);
	КонецЕсли;
КонецПроцедуры

#КонецОбласти



